#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <queue>
#include <algorithm>

#define FOR(i,a,n) for(int i=a;i<n;++i)
#define REP(i,n) FOR(i,0,n)

using namespace std;



struct Opr
{
    string a,k,b;
    Opr(string x,string y,string z)
    {
        a=x,k=y,b=z;
    }
    void print()
    {
        printf("lea ebx, [%s%s%s]\n",a.c_str(),k.c_str(),b.c_str());
    }
};
vector<Opr> ans;

int n;

int getBit(int a,int p)
{
    return a&(1<<p);
}
int main()
{
    cin>>n;
    int p = 31;
    while(!getBit(n,p)) p--;
    int pt = p;
    bool first = true;
    while(--pt>=0)
    {
        int cnt = 1;
        while(pt>0&&cnt<3&&!getBit(n,pt))pt--,cnt++;
        string a="",k="",b="";
        if(getBit(n,pt)) a="eax + ";
        k=char((1<<cnt)+'0');k+="*";
        if(first)
        {
            b="eax";
            first = false;
        }
        else b="ebx";
        ans.push_back(Opr(a,k,b));
    }
    cout<<ans.size()<<endl;
    REP(i,ans.size()) ans[i].print();
	return 0;
}
